package com.air.antispider.stream.dataprocess.businessprocess

import scala.collection.mutable.ArrayBuffer

/**
  * url过滤功能
  */
object FilterURL {
  def filterRule(message: String, filterRuleList: ArrayBuffer[String]): Boolean = {
    //进行过滤的操作
    //根据#CS#进行数据的切割
    /**
      * 17/Jul/2019:16:27:36 +0800
      * POST /B2C40/dist/main/images/loadingimg.jpg HTTP/1.1
      * POST
      */
    val arr1: Array[String] = message.split("#CS#")
    //进行判断
    if (arr1.length > 1) {
      //获取url地址
      val arr2: Array[String] = arr1(1).split(" ")
      //再次进行判断
      if (arr2.length > 1) {
        var url = arr2(1)
        //将拿到的url和redis中的规则进行对比
        for (rule <- filterRuleList) {
          if (url.matches(rule)) {
            //如果当前url和过滤规则匹配上,那么当前url就是我想过滤掉的
            return false
          }
        }
        //如果整个for循环都走完了,还没有return,那么肯定是我想要的数据
        return true
      }
    }
    //代表当前数据不完整,比如只有一行
    return false
  }

}
